
#include "head.h"
void log_func(client_status *user, sendMsg *msg, int num, const char *funname, const char *name){
    printf("向日志写入了东西\n");
    printf("用户名:%s 命令的mode码:%d ",user->user_name,msg->mode);
    printf("操作所在文件%s 所在函数%s log行号：%d \n", name, funname, num);


    char log_path[4096];
    char file_name[11]="my_log.log";

    getcwd(log_path,sizeof(log_path));
    //printf("日志文件所在路径%s\n",log_path);
    strcat(log_path,"/");
    strcat(log_path,file_name);
    printf("log_path:%s\n",log_path);

    int fd_file=open(log_path,O_RDWR|O_CREAT|O_APPEND,0777);
    printf("fd_file:%d\n",fd_file);
 //   ERROR_CHECK(fd_file,-1,"open_log_file");


    // 保存当前标准输出文件描述符
    int stdout_backup = dup(STDOUT_FILENO);
    //将标准输出重定向到文件
    dup2(fd_file,STDOUT_FILENO);
    printf("用户名:%s 命令的mode码:%d ",user->user_name,msg->mode);
    printf("操作所在文件%s 所在函数%s log行号：%d \n", name, funname, num);
    // 将标准输出恢复到原来的文件描述符
    dup2(stdout_backup, STDOUT_FILENO);

    //func(__LINE__, __FUNCTION__, __FILE__);
    sleep(1);
    close(fd_file);
}
/*
int main(int argc,char*argv[])
{
    //func(__LINE__, __FUNCTION__, __FILE__);

    func(__LINE__, __FUNCTION__, __FILE__);

    return 0;
}
*/
// __LINE__: 当前源代码行号
// __FUNCTION__:当前函数名称的字符串
// __FILE__:源文件名的字符串
//

/*
//创建守护进程
void create_daemon()
{
    pid_t pid,sid;
    pid=fork();
    if(pid!=0){
        //父进程逻辑
        exit(EXIT_SUCCESS);
    }
    //子进程逻辑

    //屏蔽文件权限的对应位
    umask(0);

    //禁止子进程重新打开终端
    sid=setsid();
    if(sid<0){
        exit(EXIT_FAILURE);
    }
    //更改工作目录
    //TODO
    chdir("/");

    //关闭标准输入、标准输出、标准错误
    //防止与终端发生交互
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
}
*/
/*
//处理客户端发来的日志信息
void handle_client_log(int client_socket)
{

    int bytes_received=recv(client_socket,buf,)


}*/
